import axios from "axios";
import { Message } from "element-ui";
import store from "@/store";
import { getToken } from "@/utils/auth";
import router from "@/router/index";

//超时时间设置
axios.defaults.timeout = 50000;
//true允许 cookie跨域
axios.defaults.withCredentials = true;
//Content-Type 响应头
axios.defaults.headers.post["Content-Type"] =
  "application/x-www-form-urlencoded;charset=UTF-8";
// url
axios.defaults.baseURL = "http://localhost:3000";

// 请求拦截器
axios.interceptors.request.use(
  // config => {
  //   在请求发送前做的操作
  //   if (store.getters.token) {
  //     // 如果token 存在
  //     // 每一个请求头都携带 token
  //     // ['X-Token'] 是 一个 自定义的 头部值
  //     //  从store 中获取
  //     config.headers["X-Token"] = getToken();
  //     // console.log(12222);
  //   }
  //   return config;
  // },
  // error => {
  //   // 请求出现错误
  //   // 输出错误信息
  //   console.log(error);
  //   return Promise.reject(error);
  // }
);

// 响应拦截器
axios.interceptors.response.use(
  // response => {
  //   // 如果返回的状态码为200，说明接口请求成功，可以正常拿到数据
  //   // 否则的话抛出错误
  //   if (response.status === 200) {
  //     return Promise.resolve(response);
  //   } else {
  //     return Promise.reject(response);
  //   }
  // },
  // error => {
  //   if (error.response.status) {
  //     switch (error.response.status) {
  //       // 401: 未登录
  //       case 401:
  //         router.replace({
  //           path: "/",
  //           query: {
  //             redirect: router.currentRoute.fullPath
  //           }
  //         });
  //         break;
  //       case 403:
  //         console.log("管理员权限已修改请重新登录");
  //         // 跳转登录页面，并将要浏览的页面fullPath传过去
  //         // 登录成功后跳转需要访问的页面
  //         setTimeout(() => {
  //           router.replace({
  //             path: "/",
  //             query: {
  //               redirect: router.currentRoute.fullPath
  //             }
  //           });
  //         }, 1000);

  //         break;
  //       case 404:
  //         // 404请求不存在
  //         console.log("请求页面飞到火星去了");
  //         break;
  //     }
  //     // 控制台输出错误信息
  //     console.log("err" + error);
  //     // 界面显示错误信息
  //     Message({
  //       message: error.message,
  //       type: "error",
  //       duration: 5 * 1000
  //     });

  //     return Promise.reject(error);
  //   }
  // }
);

/**
 * 封装get方法
 * @param url
 * @param data
 * @returns {Promise}
 */

export function get(url, params = {}) {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params
      })
      .then(response => {
        resolve(response.data);
      })
      .catch(err => {
        reject(err);
      });
  });
}

/**
 * 封装post请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function post(url, data = {}) {
  
  return new Promise((resolve, reject) => {
    axios.post(url, data).then(
      response => {
        resolve(response.data);
      },
      err => {
        reject(err);
      }
    );
  });
}

/**
 * 封装delete请求
 * @param url
 * @param data
 * @returns {Promise}
 */
// delete 是保留字 所以使用 deletes 代替 delete 方法
export function deletes(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.delete(url, data).then(
      response => {
        resolve(response.data);
      },
      err => {
        reject(err);
      }
    );
  });
}

/**
 * 封装put请求
 * @param url
 * @param data
 * @returns {Promise}
 */

export function put(url, data = {}) {
  return new Promise((resolve, reject) => {
    axios.put(url, data).then(
      response => {
        resolve(response.data);
      },
      err => {
        reject(err);
      }
    );
  });
}
